package org.kabeja.dxf.entity;

import org.kabeja.dxf.DXFDocument;
import org.kabeja.dxf.DXFExtrusion;

/**
 * @author shutao
 * @since 2022/4/24 17:09
 */
public abstract class DXFEntity {
    protected DXFDocument doc;
    protected String id = "";
    protected String layerID = "";
    protected boolean visibile = true;
    protected String lineType = "";
    protected int flags = 0;
    protected boolean block = false;
    protected double linetypeScaleFactor = 1.0D;
    protected int color = 0;
    protected byte[] colorRGB;
    protected int lineWeight;
    protected double transparency;
    protected double thickness = 0.0D;
    protected DXFExtrusion extrusion = new DXFExtrusion();
    protected boolean modelSpace = true;

    /** 扩展对象图元 */
    protected String dictionary = "";
    protected String reactors = "";

    public DXFEntity() {
    }

    public void setDictionaryId(String var1) {
        this.dictionary = var1;
    }

    public String getDictionaryId() {
        return this.dictionary;
    }

    public void setReactorsId(String var1) {
        this.reactors = var1;
    }

    public String getReactorsId() {
        return this.reactors;
    }

    public void setDXFDocument(DXFDocument var1) {
        this.doc = var1;
    }

    public DXFDocument getDXFDocument() {
        return this.doc;
    }

    public String getLayerName() {
        return this.layerID;
    }

    public void setLayerName(String var1) {
        this.layerID = var1;
    }

    public abstract Bounds getBounds();

    public String getLineType() {
        return this.lineType;
    }

    public void setLineType(String var1) {
        this.lineType = var1;
    }

    public boolean isVisibile() {
        return this.visibile;
    }

    public void setVisibile(boolean var1) {
        this.visibile = var1;
    }

    public int getFlags() {
        return this.flags;
    }

    public void setFlags(int var1) {
        this.flags = var1;
    }

    public void setBlockEntity(boolean var1) {
        this.block = var1;
    }

    public boolean isBlockEntity() {
        return this.block;
    }

    public void setExtrusion(DXFExtrusion var1) {
        this.extrusion = var1;
    }

    public DXFExtrusion getExtrusion() {
        return this.extrusion;
    }

    public double getLinetypeScaleFactor() {
        return this.linetypeScaleFactor;
    }

    public void setLinetypeScaleFactor(double var1) {
        this.linetypeScaleFactor = var1;
    }

    public int getColor() {
        return this.color;
    }

    public void setColor(int var1) {
        this.color = var1;
    }

    public byte[] getColorRGB() {
        return this.colorRGB;
    }

    public void setColorRGB(byte[] var1) {
        this.colorRGB = var1;
    }

    public int getLineWeight() {
        return this.lineWeight;
    }

    public void setLineWeight(int var1) {
        this.lineWeight = var1;
    }

    public double getTransparency() {
        return this.transparency;
    }

    public void setTransparency(double var1) {
        this.transparency = var1;
    }

    public void setID(String var1) {
        this.id = var1;
    }

    public String getID() {
        return this.id;
    }

    public void setExtrusionX(double var1) {
        this.extrusion.setX(var1);
    }

    public void setExtrusionY(double var1) {
        this.extrusion.setY(var1);
    }

    public void setExtrusionZ(double var1) {
        this.extrusion.setZ(var1);
    }

    public abstract String getType();

    public double getThickness() {
        return this.thickness;
    }

    public void setThickness(double var1) {
        this.thickness = var1;
    }

    public boolean isOmitLineType() {
        return false;
    }

    public boolean isModelSpace() {
        return this.modelSpace;
    }

    public void setModelSpace(boolean var1) {
        this.modelSpace = var1;
    }

    public abstract double getLength();
}
